#ifndef DBMANGER_H
#define DBMANGER_H

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QDateTime>
#include <vector>
#include <QMap>
#include <QSqlError>
using namespace std;

class DbManger
{
public:
    // 单例实例获取
    static DbManger* getDbPtr();

    // 禁止拷贝（单例核心：唯一实例）
    DbManger(const DbManger&) = delete;
    DbManger& operator=(const DbManger&) = delete;

    // 增删改查接口
    QVector<QMap<QString, QVariant>> queryUsers(); // 查询所有用户
    bool insertUser(const QMap<QString, QVariant>& userData); // 新增用户
    bool updateUser(int id, const QMap<QString, QVariant>& userData); // 更新用户
    bool deleteUser(int id); // 删除用户
    QVector<QMap<QString, QVariant>> queryDepartments(); // 查询部门树
    QMap<QString, QVariant> getUserById(int id);
private:
    // 单例构造（私有，禁止外部创建）
    DbManger();
    ~DbManger() = default;

    // 单例静态指针
    static DbManger* dbPtr;

    // 数据库对象
    QSqlDatabase db;

    // 建表（私有方法，构造时调用）
    void createTable();
};

#endif // DBMANGER_H
